package com.farm.template.service;

import com.farm.template.domain.Template;
import com.farm.template.domain.TemplateDir;
import com.farm.template.domain.TemplateFile;
import com.farm.template.domain.ex.SysDir;
import com.farm.web.WebUtils;
import com.farm.core.sql.query.DataQuery;
import com.farm.project.domain.ProjectActive;

import java.util.List;
import java.util.Map;

import org.springframework.transaction.annotation.Transactional;

import com.farm.core.auth.domain.LoginUser;

/* *
 *功能：模板定义服务层接口
 *详细：
 *
 *版本：v0.1
 *作者：FarmCode代码工程
 *日期：20150707114057
 *说明：
 */
public interface TemplateServiceInter {
	/**
	 * 新增实体管理实体
	 * 
	 * @param entity
	 */
	public Template insertTemplateEntity(Template entity, LoginUser user);

	/**
	 * 修改实体管理实体
	 * 
	 * @param entity
	 */
	public Template editTemplateEntity(Template entity, LoginUser user);

	/**
	 * 删除实体管理实体
	 * 
	 * @param entity
	 */
	public void deleteTemplateEntity(String id, LoginUser user);

	/**
	 * 获得实体管理实体
	 * 
	 * @param id
	 * @return
	 */
	public Template getTemplateEntity(String id);

	/**
	 * 创建一个基本查询用来查询当前实体管理实体
	 * 
	 * @param query 传入的查询条件封装
	 * @return
	 */
	public DataQuery createTemplateSimpleQuery(DataQuery query);

	/**
	 * 设置分类
	 * 
	 * @param tids
	 * @param catalogId
	 * @param currentUser
	 */
	public void updateCatalog(String tids, String catalogId, LoginUser currentUser);

	/**
	 * 获得模板目录
	 * 
	 * @param templateId
	 * @return
	 */
	public List<TemplateDir> getTemplateDirs(String templateId);

	/**
	 * 获得模板文件
	 * 
	 * @param templateId
	 * @return
	 */
	public List<TemplateFile> getTemplateFiles(String templateId);

	/**
	 * 获得目录信息（包含层级关系）
	 * 
	 * @param dir
	 * @return
	 */
	public List<SysDir> getTemplateDir(TemplateDir dir, Map<String, Object> attrs);

	/**
	 * 創建物理文件夹
	 * 
	 * @param sysdirs
	 */
	public String creatSysDir(List<SysDir> sysdirs, ProjectActive active, Template template);

	/**
	 * 创建模板副本
	 * 
	 * @param templateId
	 * @param currentUser
	 */
	public String creatCopy(String templateId, LoginUser currentUser);

}